package one.chapter_2;

import java.util.AbstractList;

/**
 * 选择排序：
 * 思想：
 *     首先找到数组中最小的那个元素，
 *     其次将它和数组的第一个元素交换位置（如果第一个元素就是最小元素那么它就和自己交换）。
 *     再次，在剩下的元素中找到最小的元素，将它与数组的第二个元素交换位置。
 *     如此往复，直到整个数组排序。
 */
public class SelectionSort extends AbstractSort {
    @Override
    public void sort(Comparable[] a) {
        int N=a.length;
        for (int i=0;i<N;i++){
            int minIndex=i;
            for (int j=i+1;j<N;j++){
                if (less(a[j],a[minIndex])){
                    minIndex=j;
                }
            }
            exch(a,i,minIndex);
        }

    }





    /*@Override
    void sort(Comparable[] a) {

        int N=a.length;
        for (int i=0;i<N;i++){
           int min=i;
           for (int j=i+1;j<N;j++){
               if (less(a[j],a[min])){
                   min=j;
               }
           }
           exch(a,i,min);//N次交换
        }
    }*/



}
